using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using System.Xml.Linq;
using System.Linq;
using SlamCms.Configuration;

namespace SlamCms.SharePoint.Features.SLAM_CMS_Publishing_Site_Copy
{
	/// <summary>
	/// This class handles events raised during feature activation, deactivation, installation, uninstallation, and upgrade.
	/// </summary>
	/// <remarks>
	/// The GUID attached to this class may be used during packaging and should not be modified.
	/// </remarks>

	[Guid("90d7b01e-7b68-40d0-988c-3e8b02c6ce22")]
	public class SLAM_CMS_Publishing_Site_CopyEventReceiver : SPFeatureReceiver
	{
		// Uncomment the method below to handle the event raised after a feature has been activated.

		public override void FeatureActivated(SPFeatureReceiverProperties properties)
		{
			var web = properties.Feature.Parent as SPWeb;
			string destinationUrl = web.Url;
			
			string templateName = "PublishingSiteTemplate";
			try
			{
				templateName = ConfigurationManager.Environment.Settings.ContainsKey("PublishingSiteTemplateName") ? ConfigurationManager.Environment.Settings["PublishingSiteTemplateName"] : "PublishingSiteTemplate";
			}
			catch
			{
			}

			if (web.Site.AllWebs[templateName].Exists)
				PublishingSiteService.CopySite(web.Site.AllWebs[templateName].Url, destinationUrl);
		}


	   
		// Uncomment the method below to handle the event raised before a feature is deactivated.

		//public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
		//{
		//}


		// Uncomment the method below to handle the event raised after a feature has been installed.

		//public override void FeatureInstalled(SPFeatureReceiverProperties properties)
		//{
		//}


		// Uncomment the method below to handle the event raised before a feature is uninstalled.

		//public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
		//{
		//}

		// Uncomment the method below to handle the event raised when a feature is upgrading.

		//public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
		//{
		//}
	}
}
